As computing systems become available throughout the world, the ability to display complex writing systems becomes increasingly important. In general, the process of displaying text includes analyzing an input string of character codes according to a particular writing system, transforming the input string of character codes into a sequence of glyph indices and displaying the sequence of glyphs on a graphical device. Character codes are numerical designators for characters defined by Unicode, an industry standard list of approximately one million characters and their associated numerical designators designed to allow symbols from various writing systems in the world to be consistently represented and manipulated by computers.
A writing system may be defined as a symbolic system used to represent statements expressible in human language. A glyph index may be defined as the zero-based integral value used to refer to a particular glyph, or shape given in a particular typeface to a symbol of a writing system. For example, glyph indices may represent letters of the alphabet, punctuation, symbols, and the like. Further, glyph indices may represent elements used to form complex combinations of glyph indices representing characters in writing systems such as Hindi or Chinese. The process of displaying text may be understood as the computing system receiving the Unicode character codes from the input keystrokes, mapping those character codes to appropriate glyph indices for a particular writing system and displaying the glyphs. For some writing systems, such as English, the mapping process is a simple one to one mapping. However, in other writing systems, such as Hindi, the mapping process may be very complex with ten character codes mapping to five glyph indices in a different order than inputted.
Typically, the input string of character codes may be analyzed by complex custom code and transformed into a sequence of glyph indices. Each writing system supported by a computing system requires extensive custom code to handle the intricacies of that writing system. Therefore, the effort required to encode, test and maintain each writing system is monumental, requiring huge amounts of time and money. Moreover, the custom code is not extendable such that new writing systems cannot be easily added. A need exists for a new way in which an input string may be analyzed and transformed into a sequence of glyph indices.